gusucode.com > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM源码程序 > 支持向量机工具箱 - LIBSVM OSU_SVM LS_SVM\Classification_OSU_SVM.m

    % 支持向量机用于多类模式分类 - 必须选择最优参数 Gamma,C
% 工具箱:OSU_SCM3.00
% 使用平台:Matlab6.5
% 作者:陆振波,海军工程大学
% 欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页
% 电子邮件:luzhenbo@sina.com
% 个人主页:luzhenbo.88uu.com.cn

clc
clear
close all
%---------------------------------------------------
% 产生训练样本与测试样本,每一列为一个样本

n1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
x1 = [1*ones(1,5),2*ones(1,5),3*ones(1,5)];     % 特别注意:这里的目标与神经网络不同

n2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
x2 = [1*ones(1,5),2*ones(1,5),3*ones(1,5)];     % 特别注意:这里的目标与神经网络不同

xn_train = n1;          % 训练样本
dn_train = x1;          % 训练目标

xn_test = n2;           % 测试样本
dn_test = x2;           % 测试目标

%---------------------------------------------------
% 参数设置

Samples1 = xn_train; 
Labels1 = dn_train;
Samples2 = xn_test; 
Labels2 = dn_test;

Gamma = 1;
C = 1;

%---------------------------------------------------
% 训练与测试

% 训练
% 输出参数即是训练结果,其物理意义相当于网格结构参数,用于测试及新样本识别时的输入
% 这里使用 RbfSVC 函数训练,还可以使用 LinearSVC PolySVC 等函数来训练

[AlphaY, SVs, Bias, Parameters, nSV, nLabel] = ...
    RbfSVC(Samples1, Labels1, Gamma, C);

% 测试
[ClassRate, DecisionValue, Ns, ConfMatrix, PreLabels] = ...
    SVMTest(Samples2, Labels2, AlphaY, SVs, Bias,Parameters, nSV, nLabel);

%---------------------------------------------------
% 输出参数
% ClassRate      -  正确分类率, 1x1;
% DecisionValue  -  判别函数的输出(仅对2类问题有效), 1xN;
% Ns             -  每一类的样本数, 1x(L+1), 或 1xL;当为1x(L+1)时,最后一个元素不属于任何一类
% ConfMatrix     -  错判矩阵 (L+1)x(L+1), or LxL, 这里 ConfMatrix(i,j) = P(X in j| X in i);
%                   当为 (L+1)x(L+1) 时,最后一行和最后一列是那些不属于任何一类的样本
% PreLabels      -  实际测试输出, 1xN. 

%---------------------------------------------------
% 结果统计

Result = ~abs(PreLabels-Labels2)       % 正确分类显示为1
Percent = sum(Result)/length(Result)   % 正确分类率